[정처기] 정보처리기사 실기 Java 문제 모음

업데이트:



✅ 정보처리기사 Java 문제 모음

📌 다음은 Java 코드이다. 올바른 출력 결과를 작성하시오. ( 23년 3회 )


class Parent {
    int compute(int num) {
        if(num <= 1)
            return num;
        return compute(num-1) + compute(num-2);
    }
}
 
class Child extends Parent {
    int compute(int num) {
        if(num <= 1)
            return num;
        return compute(num-1) + compute(num-3);
    }
}
 
public class main {
    public static void main(String args[]) {
        Parent obj = new Child();
        System.out.print(obj.compute(7));
    }
}


정답 : 2

compute(6) + compute(4)
= compute(5) + compute(3) + compute(3) + compute(1)
= compute(4) + compute(2) + compute(2) + compute(0) + compute(2) + compute(0) + 1
= compute(3) + compute(1) + compute(1) + compute(-1) + compute(1) + compute(-1) + compute(1) + compute(-1) + 1
= compute(2) + 1 + 1 - 1 + 1 - 1 + 1 - 1 + 1
= compute(1) - 1 + 1 - 1 + 1 + 1 - 1 + 1 - 1 + 1 - 1 + 1 
= 2







📌 다음 자바 코드를 실행할 경우 에러가 발생이 된다. 에러가 발생하는 라인명을 작성하시오. ( 23년 3회 )


1		class Person {
2		    private String name;
3	    	public Person(String val) {
4        		name = val;
5    		}
6    		public static String get() {
7    			return name;
8    		}
9    		public void print() {
10        		System.out.println(name);
11    		}
12		}
13
14		public class main {
15    		public static void main(String[] args) {
16        		Person obj = new Person("Kim");
17        		obj.print();
18    		}
19		}


정답 : 7

`name`은 인스턴스 변수이고, `get()`은 static 메서드이기 때문에 
static 메서드인 `get()`에서는 name에 접근할 수 없다.







📌 다음은 JAVA 코드 문제이다. 가지고 있는 돈이 총 4620원일 경우 1000원, 500원, 100원, 10원의 지폐 및 동전을 이용하여 보기의 조건에 맞춰 최소한의 코드를 통해 괄호안을 작성하시오. ( 23년 2회 )


<보기>
변수 : m
연산자 : / , %  
괄호 : [ , ] , ( , )   
정수 : 1000, 500, 100, 10
public class Problem {

    public static void main(String[] args){
		 
		 m = 4620;
 
		 a = (              );
		 b = (              );
		 c = (              );
		 d = (              );
 
		 System.out.println(a); //천원짜리 4장 출력
		 System.out.println(b); //오백원짜리 1개 출력
		 System.out.println(c); //백원짜리 1개 출력
		 System.out.println(d); //십원짜리 2개 출력
    }
}


정답 :
m / 1000
(m % 1000) % 500
(m % 500) / 100
(m % 100) / 10







📌 다음은 자바에 대한 문제이다. 알맞은 출력값을 작성하시오. ( 23년 2회 )


public class Main{
    public static void main(String[] args) {
        
        String str1 = 'Programming';
        String str2 = 'Programming';
        String str3 = new String('Programming');
        
        println(str1==str2)
        println(str1==str3)
        println(str1.equals(str3))
        print(str2.equals(str3))
    }
}


정답 :
true
false
true
true







📌아래 자바 코드에서 출력되는 값을 작성하시오. ( 23년 1회 )


class Static{
    public int a = 20;
    static int b = 0;
}
 
public class Main{
    public static void main(String[] args) {
        
        int a;
        a = 10;
        Static.b = a;
 
        Static st = new Static();
 
        System.out.println(Static.b++);
        System.out.println(st.b);
        System.out.println(a);
        System.out.print(st.a);
    }
}


정답 :
10
11
10
20

static 변수는 클래스 변수이므로 클래스 내에서는 값이 공유된다.







📌다음 코드에서 괄호안에 알맞는 값을 변수명으로 작성하시오. ( 23년 1회 )


public class Sort {
 
    public static void swap(int[] arr, int idx1, int idx2){
        int temp = arr[idx1];
        arr[idx1] = arr[idx2];
        arr[( 1 )] = temp;
    }
 
    public static void Usort(int[] array, int length){
        for (int i = 0; i < length; i++) {
            for (int j = 0; j < length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    swap(array, j, j + 1);
                }
            }
        }
    }
 
    public static void main(String[] args) {
        int[] item = new int[] { 5, 3, 8, 1, 2, 7 };
        int nx = 6;   
        Usort(item, ( 2 ));
 
        for (int data : item) {
            System.out.print(data + " ");
        }
    }
}
출력값 : 1 2 3 5 7 8


정답 :
(1) temp
(2) item.length







📌다음 JAVA 코드에서 알맞는 출력 값을 작성하시오. ( 23년 1회 )


abstact class Vehicle {
 
    String name;
    abstract public String getName(String val);
 
    public String getName() {
            return "Vehicle name: " + name;
    }
}
 
 
 
class Car extends Vehicle {
 
    public Car(String val) {
            name= super.name =val;
    }
 
    public String getName(String val) {
            return "Car name:" + val;
    }
 
    public String getName(byte val[]) {
            return "Car name:" + val;
    }
}
 
 
public class Main {
 
    public static void main(String[] args) {
 
    Vehicle obj = new Car("Spark");
    System.out.println(obj.getName());
 
    }
}


정답 : Vehicle name : Spark







📌다음 자바 코드에 대한 출력 값을 작성하시오.


class Parent {
    int x = 100;
 
    Parent() {
        this(500);
    }
 
    Parent(int x) {
        this.x = x;
    }
 
    int getX() {
        return x;
    }
}
 
class Child extends Parent {
    int x = 4000;
    
    Child() {
        this(5000);
    }
 
    Child(int x) {
        this.x = x;
    }
}
 
public class Main {
    public static void main(String[] args) {
        Child obj = new Child();
        System.out.println(obj.getX());
    }
}


정답 : 500

1. Child obj = new Child() 에서 Child클래스의 obj객체를 생성
2. Child클래스의 생성자인 Child() 호출
3. this(5000)은 Child(5000)을 호출
4. 때문에 Child클래스의 x=5000이 됨.
5. obj.getX() 호출
6. Child클래스에는 getX()메서드가 없고, 부모클래스인 Parent클래스의 getX() 실행
7. Parent 클래스의 생성자인 Parent() 호출
8. this(500)은 Parent(500) 호출
9. this.x = x를 실행하므로 Parent클래스의 x=500이 됨.
10. getX() return 500; 







📌 다음 자바 코드에 대한 출력 값을 작성하시오. ( 22년 3회 )


public class Main {
  static int[] MakeArray(){
 
	  int[] tempArr = new int[4];
  
	  for(int i=0; i<tempArr.length;i++){
	    tempArr[i] = i;
	  }
  
	  return tempArr;
  }
  
  public static void main(String[] args){
  
	  int[] intArr;
	  intArr = MakeArray();
  
	  for(int i=0; i < intArr.Length; i++)
		  System.out.print(intArr[i]);
  }
}


정답 : 0123







📌 다음 자바 코드에 대한 출력 값을 작성하시오. ( 22년 3회 )

public class Exam {
	public static void main(String[] args){
  
		int a = 0;
		for(int i=1; i<999; i++){
			if(i%3==0 && i%2!=0)
				a = i;
		}		
	    System.out.print(a);
    }
}


정답 : 993

3의 배수이면서 짝수가 아닌 수를 찾으면 된다.
6n+3 (n>=0)을 만족하면서 값이 998보다 작은 수는 993이다.







📌다음 자바 코드에 대한 출력 값을 작성하시오. ( 22년 2회 )


public static void main(String args[]){
  
	int i = 3;
	int k = 1;
	
	switch(i) { 
	    case 1: k += 1;
	    case 2: k++;
	    case 3: k = 0; 
	    case 4: k += 3; 
	    case 5: k -= 10; 
	    default: k--; 
	}
  System.out.print(k);
}


정답 : -8

아주 비겁한 실수유도 문제.
switch(3)으로 시작해서 k=0; 으로 끝날듯 하지만,
break;문이 case마다 선언되어 있지않기때문에
case3, case4, case5, default 모두 실행된다.
따라서 k = -8







📌 다음 자바코드에서 알맞는 출력값을 작성하시오. ( 22년 1회 )


class A {
  int a;
  int b;
}
  
  public class Main {
  
	static void func1(A m){
		m.a *= 10;
	}
  
	static void func2(A m){
		m.a += m.b;
	}
  
  public static void main(String args[]){
  
  A m = new A();
  
  m.a = 100;
  func1(m);
  m.b = m.a;
  func2(m);
  
  System.out.printf("%d", m.a);
  
  }
}


정답 : 2000







📌 다음 Java 코드 중에서 밑줄에 들어갈 알맞는 코드를 작성하시오. ( 22년 1회 )


class Car implements Runnable{
	int a;
  
	public void run(){
		system.out.println("message")
	}
}
  
public class Main{
	public static void main(String args[]){
		Thread t1 = new Thread(new ___());
		t1.start();
	}
}


정답 : Car

Thread클래스의 생성자에는 Runnable 인터페이스를 구현한 객체가 필요한데,

Car클래스에서 Runnable 인터페이스를 구현하고 있으므로 Car객체가 필요하다.







📌다음 Java 코드에 대한 알맞는 출력값을 쓰시오. ( 21년 3회 )


class Connection {
	private static Connection _inst = null;
	private int count = 0;

	static public Connection get() {
		if (_inst == null) {
			_inst = new Connection();
			return _inst;
		}
		return _inst;
	}

	public void count() {
		count++;
	}

	public int getCount() {
		return count;
	}
}

public class testcon {
	public static void main(String[] args) {
		Connection conn1 = Connection.get();
		conn1.count();
		Connection conn2 = Connection.get();
		conn2.count();
		Connection conn3 = Connection.get();
		conn3.count();

		System.out.print(conn1.getCount());
	}
}


정답 : 3


댓글남기기